solve_triangular_system Interface

public interface solve_triangular_system

Module Procedures

private module subroutine solve_tri_mtx(lside, upper, trans, nounit, alpha, a, b, err)

Solves a triangular system of equations of the form or where is a triangular matrix (either upper or lower) for the unknown .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

Set to true to solve ; else, set to false to solve .

logical, intent(in) :: upper

Set to true if is upper triangular; else, set to false if is lower triangular.

logical, intent(in) :: trans

Set to true if ; else, set to false if .

logical, intent(in) :: nounit

Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

real(kind=real64), intent(in) :: alpha

The scalar multiplier .

real(kind=real64), intent(in), dimension(:,:) :: a

If lside is true, the M-by-M triangular matrix ; else, is N-by-N if lside is false.

real(kind=real64), intent(inout), dimension(:,:) :: b

On input, the M-by-N matrix . On output, the M-by-N solution matrix .

class(errors), intent(inout), optional, target :: err

The error object to be updated.

private subroutine solve_tri_mtx_cmplx(lside, upper, trans, nounit, alpha, a, b, err)

Solves a triangular system of equations of the form or where is a triangular matrix (either upper or lower) for the unknown .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

Set to true to solve ; else, set to false to solve .

logical, intent(in) :: upper

Set to true if is upper triangular; else, set to false if is lower triangular.

logical, intent(in) :: trans

Set to true if ; else, set to false if .

logical, intent(in) :: nounit

Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

complex(kind=real64), intent(in) :: alpha

The scalar multiplier .

complex(kind=real64), intent(in), dimension(:,:) :: a

If lside is true, the M-by-M triangular matrix ; else, is N-by-N if lside is false.

complex(kind=real64), intent(inout), dimension(:,:) :: b

On input, the M-by-N matrix . On output, the M-by-N solution matrix .

class(errors), intent(inout), optional, target :: err

The error object to be updated.

private subroutine solve_tri_vec(upper, trans, nounit, a, x, err)

Solves the triangular system where is a triangular matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: upper

Set to true if is upper triangular; else, set to false if is lower triangular.

logical, intent(in) :: trans

Set to true if ; else, set to false if .

logical, intent(in) :: nounit

Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

real(kind=real64), intent(in), dimension(:,:) :: a

The N-by-N triangular matrix .

real(kind=real64), intent(inout), dimension(:) :: x

On input, the N-element vector . On output, the N-element solution vector .

class(errors), intent(inout), optional, target :: err

The error object to be updated.

private subroutine solve_tri_vec_cmplx(upper, trans, nounit, a, x, err)

Solves the triangular system where is a triangular matrix.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: upper

Set to true if is upper triangular; else, set to false if is lower triangular.

logical, intent(in) :: trans

Set to true if ; else, set to false if .

logical, intent(in) :: nounit

Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

complex(kind=real64), intent(in), dimension(:,:) :: a

The N-by-N triangular matrix .

complex(kind=real64), intent(inout), dimension(:) :: x

On input, the N-element vector . On output, the N-element solution vector .

class(errors), intent(inout), optional, target :: err

The error object to be updated.